#include<iostream>
using namespace std;
void f(int *a,int const n){
    a[n/2+1-1]=1;
    //i--row , j--column
    for(int i=1,j=n/2+1,count=2;count<=n*n;count++){
        if(i==1&&j!=n){
            i=n;
            j++;
            a[(i-1)*n+j-1]=count;
        }//1
        else if(j==n&&i!=1){
            j=1;
            i--;
            a[(i-1)*n+j-1]=count;
        }//2
        else if(i==1&&j==n){
            i++;
            a[(i-1)*n+j-1]=count;
        }//3
        else if(i!=1&&j!=n){
            if(a[(i-1-1)*n+j+1-1]==0){
                j++;
                i--;
                a[(i-1)*n+j-1]=count;
            }
            else{
                i++;
                a[(i-1)*n+j-1]=count;
            }
        }//4
    }
}
int main(){
    cout<<"创建一个n*n的幻方"<<endl;
    int n;
    cin>>n;
    int a[n*n];
    for(int i=0;i<n*n;i++)a[i]=0;

    f(a,n);
    for(int i=0;i<n;i++){
        for (int j=0;j<n;j++)
            cout<<a[i*n+j]<<"  ";
        cout<<endl;
    }
}